11185. Тернарная система счисления

 

Имеется целое число в десятичной системе счисления. Необходимо найти его представление в троичной системе счисления.

 

Вход. Содержит не более 100 тестов. Каждая строка является отдельным тестом и содержит неотрицательное целое число n (n < 1000000001). Последняя строка содержит отрицательное число и не обрабатывается.

 

Выход. Для каждого входного значения n вывести его троичное представление.

 

Пример входа

10

100

1000

-1

 

Пример выхода

101

10201

1101001

 

 

РЕШЕНИЕ

элементарные вычисления

 

Анализ алгоритма

Достаточно реализовать преобразование числа из десятичной в троичную систему счисления делением в столбик. Отдельно следует обработать случай n = 0.

 

Реализация алгоритма

Читаем входное значение n, пока оно не отрицательно. Если оно равно 0, то полагаем результат s равным “0”.

 

  while(scanf("%d",&n), n >= 0)

  {

    if (!n) s = "0";  else

    {

 

Делим в цикле число n на 3, пока оно не станет равным 0. Запоминаем остатки от деления  n на 3 в строке s в виде символов. Обращаем стоку s при помощи функции reverse и выводим ее.

 

      for(s= ""; n > 0; n /= 3) s += n%3 + '0';

      reverse(s.begin(),s.end());

    }

    printf("%s\n",s.c_str());

  }